Hugo 提供了 Archetypes 作為內容模板,在新增 Content Page 時,根據 Content Type 翻印對應模板,新生成的檔案就有模板的 Front Matter 預先配置、文章基本段落等等,在由寫作者調整部分參數,快速進入寫作的環節。
在你初始化專案後,你會看到專案資料結構中有個資料夾名為 archetypes
,此處是用來放置各種 Content Page 模板的,一開始只會有 default.md
,其他的模板看個人需求自行添加。
下指令 hugo new posts/my-first-post.md
新增一份 Content Page 之後,翻印來源會依據指令、下列順序,找出有無符合模板,有的話則翻印一份產生新的文章:
這邊 hugo new
是根據 content-section 名稱來尋找最適合此次指令執行,最貼近文章路徑名稱的模板進行套用的,關於 content-section 這部分之後會在介紹;
順帶一提,筆者測試了(根據匹配邏輯)對不到任何模板,其實也不會怎樣,產生的檔案還是會有至少以下內容寫入檔案中:
---
title: "My First Post"
date: 2020-09-24T08:18:37+08:00
draft: true
---
假設我想新增一個模板名為 triathlon
,我可以在 archetypes
下新增一個 markdown file 如下
.
├── archetypes
└── triathlon.md
假設模板內容為
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---
# Day nn. {title}
# 前言
write something cool...
# 主要內容
write something cool...
# 小結
write something cool...
# 參考連結
* []()
新增完成後,當你執行下列指令建立新的文章時:
hugo new triathlon/day-01-hello-hugo.md
在 ./content/
底下會新增 triathlon/
這個 content-section
,且同時會在底下新增一個 day-01-hello-hugo.md
的檔案,以下是文章內容:
---
title: "Day 01 Hello Hugo"
date: 2020-09-24T08:26:55+08:00
draft: true
---
# Day nn. {title}
# 前言
write something cool...
# 主要內容
write something cool...
# 小結
write something cool...
# 參考連結
* []()
筆者目前正在使用中的模板有以下五種,分別是:
文章模板的內容也體現出了作者在寫作時,對於每個種類的文章規劃的結構,筆者自己的文章基本上區分為:
.md
檔案內容最上面,有一塊用 ---
隔開的內容。---
+++ Front Matter +++
---
+++ Body +++
---
+++ Footer +++
今天介紹了 Hugo Archetypes 文章模板、模板套用原理與優先順序,以及文章內容的結構,在此要再次說明,所謂「文章結構」是為了方便讓沒使用過的使用者,對規劃自建模板有個初步概念,才會用這個說法幫助大家理解,Hugo 官方則是沒有特別定義這種說法。
另外文中還有提到尚未講過的 Front Matter、Content Section、Shortcode 等,這些之後會在陸續介紹到。
筆者經常使用「文章」這名詞來描述「一支 post/hello.md」這種 Markdown 檔案,而官方稱之為「Content Page」,其實指的都是「文章」,而「Content」指的是「文章內容」,表示那些寫在檔案裡面的文字,在此特別說明,是因為筆者自己之前還沒有很明確認知到這件事。